#ifndef ENCODER_H
#define ENCODER_H

#include <stdint.h>
#include <stdbool.h>

// 编码器方向状态
typedef enum {
    ENCODER_ROTATE_FORWARD,   // 正转
    ENCODER_ROTATE_BACKWARD,  // 反转
    ENCODER_STILL             // 静止
} EncoderRotateState;

// 编码器按键状态
typedef enum {
    ENCODER_BUTTON_PRESSED,   // 按键按下
    ENCODER_BUTTON_RELEASED   // 按键弹起
} EncoderButtonState;

// 定义编码器状态类型
typedef struct {
    int32_t count;                 // 当前计数
    EncoderRotateState direction;  // 旋转方向状态
    EncoderButtonState button;     // 按键状态
} EncoderState;

// 外部接口
void encoder_init(int pin_a, int pin_b, int pin_k);  // 初始化编码器
EncoderState *encoder_get_state(void);              // 获取编码器当前状态
void encoder_reset_count(void);                     // 重置计数
bool encoder_get_event_flag(void);
#endif // ENCODER_H
